package fr.iut2.tc1.client;

import java.util.ArrayList;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;

import fr.iut2.tc1.shared.UnTroll;

public class ListeImageTroll extends Composite implements ClickHandler{

	private AbsolutePanel page;
	private AbsolutePanel header;
	private AbsolutePanel footer;
	
	private Label title;
	private Button btnOtherView;
	private Galerie galerie;

	private HorizontalPanel contentPanel;
	private ImageTroll imageTroll;
	
	private HorizontalPanel panelNom;
	private HorizontalPanel panelCaracteristique;
	private HorizontalPanel panelCompetence;
	private Label nom;
	private Label caracteristique;
	private Label competence;
	private AbsolutePanel descripNom;
	private AbsolutePanel descripCaracteristique;
	private AbsolutePanel descripCompetence;
	
	private HorizontalPanel controlPanel;
	private Button creer;
	private Button modifier;
	private Button supprimer;
	
	private ListeCaracteristiquesImage carac;
	
	private ArrayList<Result> sauvegardeTroll;

	
	
	public ListeImageTroll(ArrayList<Result> result) {
		
		sauvegardeTroll=result;
		page = new AbsolutePanel();
		page.setStyleName("page");
		
		header = new AbsolutePanel();
		header.setStyleName("header");
		page.add(header);
		
		title = new Label("Galerie de TROLL");
		title.setStyleName("titre");
		
		btnOtherView = new Button("Changer de vue");
		btnOtherView.addClickHandler(this);
		btnOtherView.setStyleName("btnOtherView");
		
		
		contentPanel = new HorizontalPanel();
		contentPanel.setStyleName("contentPane");
		imageTroll = new ImageTroll();
		imageTroll.setStyleName("imageAffichage");
		
		//Utilisation du widget caracteristique
		carac = new ListeCaracteristiquesImage();
		carac.setStyleName("caracTroll");
		
		contentPanel.add(imageTroll);
		contentPanel.add(carac);
		
		controlPanel = new HorizontalPanel();
		controlPanel.setStyleName("panelControl");
		
		creer = new Button("Creer");
		creer.setStyleName("btnControl");
		creer.addClickHandler(this);
		
		modifier = new Button("Modifier");
		modifier.setStyleName("btnControl");
		modifier.addClickHandler(this);
		
		supprimer = new Button("Supprimer");
		supprimer.setStyleName("btnControl");
		supprimer.addClickHandler(this);
		
		controlPanel.add(creer);
		controlPanel.add(modifier);
		controlPanel.add(supprimer);
		
		header.add(title);
		header.add(btnOtherView);

		galerie = new Galerie(result);
		galerie.setStyleName("galerie");
		page.add(galerie);
		page.add(contentPanel);
		page.add(controlPanel);
		
		//footer
		footer = new AbsolutePanel();
		footer.setStyleName("footer");
		page.add(footer);
		
		initWidget(page);
	}
	

	@Override
	public void onClick(ClickEvent event) 
	{
		if(event.getSource()==this.btnOtherView)
		{
			Troll.get().changerPage(0);
		}
		if(event.getSource()==this.supprimer)
		{
			if(!this.galerie.getTrollFocus().equals(""))
			{
				Troll.get().supprimerTroll(this.galerie.getTrollFocus());
			}
		}
		if(event.getSource()==this.modifier)
		{
			UnTroll trollToModif;
			boolean trouve=false;
			
			for(int i=0;i<sauvegardeTroll.size();i++)
			{
				if(sauvegardeTroll.get(i).getName().equals(this.galerie.getTrollFocus()))
				{
					trollToModif = new UnTroll(sauvegardeTroll.get(i).getName(),sauvegardeTroll.get(i).getRace(),sauvegardeTroll.get(i).getNomImage());
					trollToModif.setCaracteristiques(sauvegardeTroll.get(i).getAttaque(), sauvegardeTroll.get(i).getDegat(), sauvegardeTroll.get(i).getEsquive(), sauvegardeTroll.get(i).getRegeneration(), sauvegardeTroll.get(i).getVie());
					trollToModif.setPointsCompetence(sauvegardeTroll.get(i).getComp1(), sauvegardeTroll.get(i).getComp2());
					
					//On envoie le troll à troll.java
					Troll.get().setTrollToModif(trollToModif);
					trouve=true;
					break;
				}
			}
			
			if(trouve)
			{
				Troll.get().changerPage(3);
			}
			else
			{
				Window.alert("Vous n'avez pas sélectionné de troll");
			}
		}
		if(event.getSource()==this.creer)
		{
			Troll.get().changerPage(2);
		}
		
	}
}
